import { aiService } from '@/utils/ai-service'

/**
 * 调试和测试模型配置
 */

// 测试单个模型的连通性
export async function testSingleModel(provider: string, model: string) {
  console.log(`\n🧪 测试 ${provider} - ${model}`)
  
  try {
    const startTime = Date.now()
    
    const response = await aiService.quickChat(
      '你好，请简单介绍一下你自己，用一句话即可。',
      '你是一个有用的AI助手',
      { provider, model }
    )
    
    const duration = Date.now() - startTime
    
    console.log(`✅ 测试成功`)
    console.log(`⏱️ 响应时间: ${duration}ms`)
    console.log(`📝 回复: ${response}`)
    
    return { success: true, duration, response }
    
  } catch (error) {
    console.log(`❌ 测试失败: ${error instanceof Error ? error.message : String(error)}`)
    return { success: false, error }
  }
}

// 测试所有配置的模型
export async function testAllModels() {
  console.log('🚀 开始测试所有模型配置...')
  
  // 检查 API 密钥状态
  const status = aiService.getProviderStatus()
  console.log('\n📋 API密钥状态:')
  Object.entries(status).forEach(([provider, info]) => {
    console.log(`- ${provider}: ${info.hasApiKey ? '✅ 已配置' : '❌ 未配置'}`)
  })
  
  const testCases = [
    // 通义千问
    { provider: 'qwen', model: 'qwen-plus-latest' },
    
    // DeepSeek
    { provider: 'deepseek', model: 'deepseek-reasoner' },
    
    // 豆包
    { provider: 'doubao', model: 'doubao-seed-1-6-250615' }
  ]
  
  const results = []
  
  for (const testCase of testCases) {
    const result = await testSingleModel(testCase.provider, testCase.model)
    results.push({ ...testCase, ...result })
    
    // 添加延迟避免请求过快
    await new Promise(resolve => setTimeout(resolve, 1000))
  }
  
  // 汇总结果
  console.log('\n📊 测试结果汇总:')
  const successCount = results.filter(r => r.success).length
  console.log(`成功率: ${successCount}/${results.length}`)
  
  results.forEach(result => {
    const status = result.success ? '✅' : '❌'
    console.log(`${status} ${result.provider}/${result.model}`)
  })
  
  return results
}

// 测试特定的错误情况
export async function testErrorCases() {
  console.log('\n🔍 测试错误处理...')
  
  // 测试不存在的模型
  try {
    await aiService.quickChat('测试', undefined, {
      provider: 'deepseek',
      model: 'nonexistent-model'
    })
  } catch (error) {
    console.log('✅ 正确处理了不存在的模型错误')
  }
  
  // 测试不存在的提供商
  try {
    await aiService.quickChat('测试', undefined, {
      provider: 'nonexistent-provider' as any,
      model: 'any-model'
    })
  } catch (error) {
    console.log('✅ 正确处理了不存在的提供商错误')
  }
}

// 调试豆包配置
export function debugDoubaoConfig() {
  console.log('\n🔧 豆包配置调试:')
  
  const apiKey = import.meta.env.VITE_DOUBAO_API_KEY
  
  console.log(`API Key: ${apiKey ? '✅ 已配置' : '❌ 未配置'}`)
  console.log(`模型: doubao-seed-1-6-250615`)
  
  if (!apiKey) {
    console.log('⚠️ 豆包需要配置 VITE_DOUBAO_API_KEY')
    console.log('📖 请在火山引擎控制台获取API密钥')
  }
}

// 快速诊断
export async function quickDiagnosis() {
  console.log('🩺 快速诊断开始...')
  
  // 1. 检查环境变量
  debugDoubaoConfig()
  
  // 2. 检查服务状态
  const status = aiService.getProviderStatus()
  const hasAnyKey = Object.values(status).some(s => s.hasApiKey)
  
  if (!hasAnyKey) {
    console.log('⚠️ 没有配置任何API密钥，请检查 .env 文件')
    return
  }
  
  // 3. 测试可用的模型
  console.log('\n🧪 测试可用模型...')
  
  // DeepSeek（推理模型）
  if (status.deepseek.hasApiKey) {
    await testSingleModel('deepseek', 'deepseek-reasoner')
  }
  
  // 通义千问
  if (status.qwen.hasApiKey) {
    await testSingleModel('qwen', 'qwen-plus-latest')
  }
  
  // 豆包
  if (status.doubao.hasApiKey) {
    await testSingleModel('doubao', 'doubao-seed-1-6-250615')
  }
}

// 如果直接运行此文件，执行快速诊断
if (typeof window === 'undefined') {
  quickDiagnosis().catch(console.error)
}